/******************************************************************************
** 公司名称：天津柯迪斯科技有限公司
** 版权信息：
** 文件名称： App_Protocol_TS_J.h
** 模块名称： 同盛J协议处理模块
** 版 本 号： V1.0
** 作    者： 蒲磊
**
** 修改记录： 版本     修改人      时间         修改内容

******************************************************************************/
#ifndef __APP_PROTOCOL_TS_J_H_
#define __APP_PROTOCOL_TS_J_H_

/******************************************************************************
* 头文件
******************************************************************************/
#include "bsp.h"
/******************************************************************************
* 宏定义 ('#define')
******************************************************************************/
#define TS_J_LIMIT_SPEED_OFFECT  20         /*同盛J协议的限速偏移量，默认是20*/
/******************************************************************************
* 类型定义 ('typedef')
******************************************************************************/
typedef struct
{
    uint16_t 	Current;
    uint16_t 	Speed_Cnt;
    uint8_t		ErrCode;
    int8_t		Soc;
    uint16_t    Capaticy;

} stRECEIVED_DATA;


typedef struct
{
    uint8_t		Lamp;                   /*大灯状态*/
    uint8_t     Turn_Left;              /*左转向灯状态*/
    uint8_t     Turn_Right;             /*右转向灯状态*/
    uint8_t		Push;                   /*助推状态*/
    uint8_t		Pas;                    /*档位*/
    uint16_t    Speed_Limit;            /*限速值，分辨率：0.1Km/h*/
    uint8_t		Wheel_Diameter;         /*轮径，英寸*/
    uint16_t    PowerOff;               /*系统关机标志*/

} stSEND_DATA;

typedef enum
{
    Send_Stop 			= 0,
    Send_Run_Data,
    Send_Config_Data,
    Send_Config_Data_OneTime,
} enSEND_DATA_TYPE;
/******************************************************************************
* 全局变量声明
******************************************************************************/

/******************************************************************************
* 函数声明
******************************************************************************/
void vPROTOCOL_Get_OneFrame(uint8_t *pData,uint16_t Len);
void vPROTOCOL_Loop(void);
void vPROTOCOL_Send_Run_Data(void);
void vPROTOCOL_Send_Config_Data(void);
void vPROTOCOL_Send_Config_Data_OneTime(void);


void vPROTOCOL_Set_Lamp(uint8_t State);
void vPROTOCOL_Set_Pas(int8_t Pas);
void vPROTOCOL_Set_Speed_Limit(uint16_t Speed);
void vPROTOCOL_Set_Wheel(uint16_t Wheel);
void vPROTOCOL_Set_TurnSignal(uint8_t Direction,uint8_t State);
void vPROTOCOL_Set_PowerOff(uint8_t PowerOff);

int8_t cPROTOCOL_Get_Soc(void);
uint16_t usPROTOCOL_Get_Current(void);
uint16_t usPROTOCOL_Get_Speed(void);
uint8_t ucPROTOCOL_Get_Errcode(void);
void vPROTOCOL_Send(void);

void vPROTOCOL_ResetCommunicationOverTime(void);
void vPROTOCOL_Set_Value_When_PowerOn(void);
void vPROTOCOL_Set_Value_When_ExitSetting(void);

void vPROTOCOL_Set_Pas_Range(int8_t Pas_Range);

#endif
